﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Presentacion
{
    public partial class frmSubtipoReclamoActualizar : Form
    {
        private ErrorProvider ep = new ErrorProvider();
        private SubtipoReclamo subtipo;

        public frmSubtipoReclamoActualizar()
        {
            InitializeComponent();
        }

        public frmSubtipoReclamoActualizar(SubtipoReclamo st)
        {
            InitializeComponent();
            subtipo = st;
            txtId.Text = st.id.ToString();
            txtDescripcion.Text = st.descripcion.ToString();
            if (st.habilitado) cmbEstado.SelectedItem = "HABILITADO";
            else cmbEstado.SelectedItem = "DESHABILITADO";
            List<TipoReclamo> tipos = TiposReclamo.buscarTiposHabilitados();
            foreach (TipoReclamo t in tipos)
            {
                cmbTipo.Items.Add(t);
                if(st.tipo!=null)
                if (t.id == st.tipo.id) cmbTipo.SelectedItem=t;            
            }
            if (cmbTipo.SelectedIndex == -1)
            {
                cmbTipo.Items.Add(st.tipo);
                cmbTipo.SelectedItem = st.tipo;
            }
            List<Departamento> departamentos = Departamentos.buscarDepartamentosHabilitados();
            foreach (Departamento d in departamentos)
            {
                cmbDepartamento.Items.Add(d);
                if (st.departamento != null)
                    if (d.id == st.departamento.id) cmbDepartamento.SelectedItem = d;
            }
            if (cmbDepartamento.SelectedIndex == -1)
            {
                cmbDepartamento.Items.Add(st.departamento);
                cmbDepartamento.SelectedItem=st.departamento;
            }
            cmbEstado.Width = Utilities.adjustWidth(cmbEstado);
            cmbTipo.Width = Utilities.adjustWidth(cmbTipo);
            cmbDepartamento.Width = Utilities.adjustWidth(cmbDepartamento);
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            ep.Clear();

            if (txtDescripcion.Text.Equals(""))
            {
                ep.SetError(txtDescripcion, "Este campo es obligatorio");
                txtDescripcion.Focus();
                return;
            }

            try
            {
                if (((TipoReclamo)cmbTipo.SelectedItem).id <= 0)
                {
                    ep.SetError(cmbTipo, "Debe elegir un Tipo de reclamo.");
                    cmbTipo.Focus();
                    return;
                }
            }
            catch
            {
                ep.SetError(cmbTipo, "Debe elegir un Tipo de reclamo.");
                cmbTipo.Focus();
                return;
            }

            try
            {
                if (((Departamento)cmbDepartamento.SelectedItem).id <= 0)
                {
                    ep.SetError(cmbDepartamento, "Debe elegir un Departamento.");
                    cmbDepartamento.Focus();
                    return;
                }
            }
            catch
            {
                ep.SetError(cmbDepartamento, "Debe elegir un Departamento.");
                cmbDepartamento.Focus();
                return;
            }

            if (subtipo.descripcion.Equals(txtDescripcion.Text) && (subtipo.tipo.id == ((TipoReclamo)cmbTipo.SelectedItem).id))
            {
                System.Diagnostics.Debug.Write(subtipo.descripcion + " - " + txtDescripcion.Text + " -- " + subtipo.tipo.id + " - " + ((TipoReclamo)cmbTipo.SelectedItem).id);
                actualizarSubtipo(subtipo);
            }
            else
            {
                SubtipoReclamo st = new SubtipoReclamo(); 
                st.setDescripcion(txtDescripcion.Text);
                st.tipo = (TipoReclamo)cmbTipo.SelectedItem;
                if (SubtiposReclamo.validarSiExiste(st))
                {
                    MessageBox.Show("El subtipo ingresado ya existe", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                }
                else
                {
                    actualizarSubtipo(subtipo);
                }
            }
        }

        private void actualizarSubtipo(SubtipoReclamo st)
        {
            subtipo.setDescripcion(txtDescripcion.Text);
            st.tipo = (TipoReclamo)cmbTipo.SelectedItem;
            if (cmbEstado.SelectedItem.Equals("HABILITADO")) st.habilitado = true;
            else st.habilitado = false;
            st.departamento = (Departamento)cmbDepartamento.SelectedItem;
            SubtiposReclamo.actualizar(st);
            DialogResult = DialogResult.OK;
            Close();
        }

        private void toolStripAyuda_Click(object sender, EventArgs e)
        {
            Utilities.mostrarAyuda(this, (this.GetType().ToString() + ".htm").Replace("SIGERP_Presentacion.", ""));
        }
    }
}
